#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>


// ��ȡ��Ч����
int getFileLines(FILE * fd){
    if(fd ==NULL){
        return -1;
    }

    char buf[1024]={0};
    int line = 0;
    while( fgets(buf,1024,fd)!=NULL ){
        // printf("%s\n",buf);
        line++;
    }
    // ���ļ��Ĺ�������ļ�ͷ
    fseek(fd, 0, SEEK_SET);    
    return line;
}

void ReadFile(FILE * fd,int line,char ** pArray){
    if(fd == NULL){
        return ;
    }
    if(fd <=0){
        return ;
    }
    if(pArray==NULL){
        return ;
    }

    char buf[1024] = {0};  
    int count = 0;
    while( fgets(buf,1024,fd) !=NULL){
        int countCurrentLine = strlen(buf)+1;
        char * currentLine = malloc( sizeof(char)* countCurrentLine );
        strcpy(currentLine,buf);
        pArray[count++] = currentLine;
        memset(buf,0,1024);
    }
}

void showFile(char ** pArray,int line){

    for (int i=0;i<line;i++){
        printf("���ǵ�%d��:%s\n", i, pArray[i]);
    }
   
}

void test(){
    //���ļ�
   FILE * fd =  fopen("./test.txt","r");
   if(fd == NULL){
       printf("�ļ���ʧ��!");
       return ;
   }


   // ͳ����Ч����
   int line = getFileLines(fd);

   printf("�ļ�����Ч����%d\n",line);

   char ** pArray = malloc(sizeof(char *) *line);

   //��ȡ�ļ��е�����
    ReadFile(fd,line,pArray);

    // ��ʾ����
    showFile(pArray,line);



    // �ͷŶ������ر��ļ�
    free(pArray);
    pArray = NULL;
    fclose(fd);


}


int main(){

    // test();

    testx();

    system("pause");
    return EXIT_SUCCESS;
}